Software distribution in modern networked systems is far different from earlier methods, where software such as operating systems, applications, and comparable ones were installed on individual computing devices typically using removable storage media such as floppy disks or CD-ROMs. In some modern networks, different software is made available to users for downloading. In case of managed computing devices, administrators may reimage computing devices with new versions of software as those become available.
Deployment of software even using reimaging may take considerable time, however. In enterprise systems with complex distributed networks such as data centers, test labs, and/or build labs, where a significant number of machines may need new versions of software relatively frequently, the time consumed in deploying the software may have a negative effect on overall efficiency and performance. Furthermore, some systems may include physical and virtual machines, where the image deployment to both types may not be supported or require significant customization. Multiple facilities spread over different geographic regions may present complexities in deploying and controlling image deployment process. Moreover, the entire deployment may not be uniform in some cases; that is some users may need customized versions of software packages.